package com.db;

import com.bean.Admin;
import com.bean.PaginationSupport;

/**
 * @author zhi keyan
 * @create 2020-12-12 15:29
 */
public interface AdminRepository {

    /**
     * 新建一个管理员
     * @param admin 新建的管理员
     * @return 管理员
     */
    Admin save(Admin admin);

    /**
     * 根据管理员ID查找管理员
     * @param adminID
     * @return
     */
    Admin findByAdminID(int adminID);
    /**
     * 根据用户名查找管理员
     * @param username
     * @return
     */
    Admin findByAdminName(String username);

    /**
     * 依据用户名和密码查找管理员
     * @param username
     * @param password
     * @return 用户
     */
    Admin findByAdminName(String username, String password);

    /**
     * 依据页码和指定页面大小，返回管理者列表
     * @param pageNo    起始位置
     * @param pageSize  每页数量
     * @return 分页是对象
     */
    PaginationSupport<Admin> findAdminPage(int pageNo, int pageSize);

    /**
     * 删除deleteAdmin账户
     * @param deleteAdmin
     */
    void deleteAdmin(Admin deleteAdmin);

    /**
     * 取得管理员的数量
     * @return 管理员的数量
     */
    long countAdmin();

    /**
     * 取得没有被删除的管理员的数量
     * @return
     */
    long countExistAdmin();

    /**
     * 修改当前admin的昵称为newAdminName，密码为newPassword
     * @param newAdminName
     * @param newPassword
     * @return
     */
    Admin adminModify(Admin admin, String newAdminName, String newPassword);

    /**
     * 计算数据库中所有管理员中，最大的adminID
     * @return
     */
    int maxAdminID();
}
